library(tidyverse)
## -- Attaching packages ---------------------------------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 2.2.1     v purrr   0.2.4
## v tibble  1.4.2     v dplyr   0.7.5
## v tidyr   0.8.1     v stringr 1.3.1
## v readr   1.1.1     v forcats 0.3.0
## -- Conflicts ------------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(here)
## here() starts at C:/Users/gabim/Desktop/AD1/lab2-cp2e3-gabriela-motta
library(spotifyr)
library(viridis)
## Loading required package: viridisLite
theme_set(theme_bw())

Considerando algumas das boybands mais famosas ao longo dos anos, elas apresentam um mesmo molde? Ou seja, a mesma média de tempo / energia / etc?

Boybands são bandas formadas geralmente por meninos adolescentes, e o estilo musical é bem característico, com músicas animadas e dançantes, e algumas baladas. Iremos analisar as principais músicas de várias boybands presentes no Spotify, entre elas as clássicas NSYNC e Backstreet Boys, além do fenômeno kpop BTS. Queremos saber se há um padrão nas características de Tempo, Dançabilidade, Valência e Energia. Tempo é a velocidade ou ritmo de uma música e é medido em batidas por minuto (BPM); Dançabilidade descreve como uma música é adequada para a dança baseada em uma combinação de elementos musicais (quanto mais próximo de 1, mais dançante); Valência mede a positividade da faixa (alta Valência significa mais positiva (por exemplo, felizes, alegres, eufóricas), enquanto baixa valência significa mais negativa (por exemplo, triste, deprimido, zangado); Energia é uma medida de 0 a 1 e representa uma medida de intensidade e atividade. A playlist base pode ser encontrada em: https://open.spotify.com/user/gabimotta15/playlist/47WfTEyFNe64N1OxeQ7xbo?si=g93Ia7niTlKYnjJlrn7dQA

boybands = read_csv(here("data/playlist-boybands.csv"))
## Parsed with column specification:
## cols(
##   danceability = col_double(),
##   energy = col_double(),
##   key = col_character(),
##   loudness = col_double(),
##   mode = col_character(),
##   speechiness = col_double(),
##   acousticness = col_double(),
##   instrumentalness = col_double(),
##   liveness = col_double(),
##   valence = col_double(),
##   tempo = col_double(),
##   track_uri = col_character(),
##   duration_ms = col_double(),
##   time_signature = col_integer(),
##   key_mode = col_character(),
##   track_name = col_character(),
##   album_name = col_character(),
##   artist = col_character()
## )
sumarios = boybands %>% 
    group_by(artist) %>%
    summarise(media_tempo = mean(tempo), media_energia = mean(energy), media_danca = mean(danceability), media_valencia = mean(valence))
b = sumarios %>% 
    ggplot(aes(y = artist)) + 
    geom_point(aes(x = media_energia, color = "Energia")) + 
    geom_point(aes(x = media_danca, color = "Dançabilidade")) +
    geom_point(aes(x = media_valencia, color = "Valência")) +
    labs(x = "Médias dos Atributos", y = "Artista" , color = "Atributo")

plotly::ggplotly(b)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`

A maioria das boybands apresenta um padrão de média de Energia acima de 0.7, e média de Dançabilidade entre 0.5 e 0.7. Apenas a Valência se destaca, tendo bandas muito positivas como Menudo (quase 0.8 de Valência), e bandas muito negativas como The Wanted (abaixo de 0.4).

p = boybands %>% 
    mutate(faixa = paste(track_name, album_name)) %>% 
    ggplot(aes(x = artist,
               color = artist,
               label = faixa,
               y = tempo)) + 
    geom_point() +
    geom_line() +
    scale_x_discrete(labels = abbreviate) +
    labs(x = "Artista", y = "Tempo (BPM)" , color = "Artista")

plotly::ggplotly(p)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`

Em relação ao Tempo, é possível observar uma grande variação entre as bandas, portanto não há um padrão específico. Existem bandas com um espaçamento de Tempo bem pequeno como a coreana SHINee, e outras bem espalhadas ao longo da escala como McFly.

Como é a concentração de Energia e Valência das boybands de KPop e música Latina?

As músicas coreanas e latinas possuem ritmos fortes, portanto vamos observar o comportamento das bandas BTS, CNCO, Menudo e SHINee.

p = boybands %>% 
    filter(artist == "BTS" | artist == "CNCO" | artist == "Menudo" | artist == "SHINee") %>%
    mutate(faixa = paste(track_name, album_name)) %>% 
    ggplot(aes(x = energy, 
               group = artist,
               label = track_name,
               y = valence)) + 
    stat_density2d(aes(fill=..level..), geom="polygon", n = 100, h = .25) +
    scale_fill_viridis() +  
    facet_wrap(~artist) + 
    scale_x_continuous(limits = c(-.05, 1.05)) + 
    scale_y_continuous(limits = c(-.05, 1.05)) + 
    theme(legend.position = "None") + 
    labs(x = "Energia", 
         y = "Valência")
plotly::ggplotly(p)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`

As músicas dessas bandas estão mais concentradas em altos níveis de Energia e Valência, logo são animadas e positivas.

Lady Gaga possui álbuns de vários estilos, o Tempo varia muito para cada álbum?

Lady Gaga é uma artista muito talentosa, ganhou vários prêmios com seus álbuns, que vão do pop ao jazz. Como é o comportamento do Tempo nesses álbuns? Tempo é a velocidade ou ritmo de uma música e é medido em batidas por minuto (BPM). Como os estilos musicais mudam, é esperado que haja uma variação nesse Tempo. Para essa análise serão desconsiderados singles e álbuns promocionais. A playlist base pode ser encontrada em: https://open.spotify.com/user/gabimotta15/playlist/7pH3kwz0vVTgmKt2cR7Z9o?si=JcvkobZXSkKBCE13ubsM7w

gaga = read_csv(here("data/playlist_gaga.csv"))
## Parsed with column specification:
## cols(
##   danceability = col_double(),
##   energy = col_double(),
##   key = col_character(),
##   loudness = col_double(),
##   mode = col_character(),
##   speechiness = col_double(),
##   acousticness = col_double(),
##   instrumentalness = col_double(),
##   liveness = col_double(),
##   valence = col_double(),
##   tempo = col_double(),
##   track_uri = col_character(),
##   duration_ms = col_double(),
##   time_signature = col_integer(),
##   key_mode = col_character(),
##   track_name = col_character(),
##   album_name = col_character(),
##   artist = col_character()
## )
mlabels <- c("ARTPOP","Born This Way", "Cheek to Cheek", "Joanne", "The Fame", "The Fame Monster")

g = gaga %>% 
    mutate(faixa = paste(track_name)) %>% 
    ggplot(aes(x = album_name,
               label = faixa,
               y = tempo)) + 
    geom_point(size = .8, alpha = .8) +
    labs(x = "Álbum", y = "Tempo (BPM)", color="Álbum") +
    scale_x_discrete(labels=mlabels)

plotly::ggplotly(g)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`

Podemos perceber que os Tempos estão geralmente concentrados entre 100 e 140 BPM, mas existe uma dispersão maior nos álbuns Cheek to Cheek e Joanne, que são os álbuns de estilos mais diferentes dos outros. Portanto o Tempo não varia muito entre os álbuns mais pop, apenas nos álbuns de jazz e country.

Os álbuns com maior variação de Tempo são acústicos?

Quanto mais próximo de 1 é o nível de acústica, mais provável é que a música seja acústica. Músicas acústicas geralmente são mais lentas, portanto possuem menor Tempo. Na análise anterior os álbuns Joanne e Cheek to Cheek se destacaram por não estar exclusivamente na faixa dos 100 a 140 BPM, e serão observados agora em relação à acústica.

g = gaga %>% 
    filter(album_name == "Cheek To Cheek (Deluxe)" | album_name == "Joanne (Deluxe)") %>%
    mutate(faixa = paste(track_name)) %>% 
    ggplot(aes(x = acousticness,
               label = faixa,
               color = album_name,
               y = tempo)) + 
    geom_point(size = .8, alpha = .8) +
    labs(x = "Acústica", y = "Tempo (BPM)", color = "Álbum")

plotly::ggplotly(g)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`

Vemos que o álbum Cheek to Cheek é quase totalmente acústico, todas as músicas estão acima de 0.5 no nível de acústica, enquanto o Joanne está bem próximo de 0. As faixas Angel Down e Million Reasons são tocadas no piano e no violão, por isso apresentam maior acústica que as outras faixas do Joanne.